#ifndef BASEDIALOG_H
#define BASEDIALOG_H

#include <QWidget>
#include <QDialog>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QPoint>
#include <QLabel>
#include <QStackedLayout>
#include "FramelessWidget.h"
#include "BaseWidgets_global.h"

namespace UserManagementSystem {
class BASEWIDGETS_EXPORT BaseDialog : public QDialog
{
    Q_OBJECT
public:
    ///@brief 传入窗口所在的左上角的位置的窗口大小
    BaseDialog(QWidget* parent=nullptr,QPoint pos=QPoint(0,0),QSize size=QSize(500,300));

    // ///@brief 绘制圆角
    virtual void paintEvent(QPaintEvent *event) override;

    ///@brief设置小窗口位置
    void SetPosition(const QPoint pos, const QSize size);

    ///@brief 设置窗口的标题
    void SetWindowTitle(const QString& title);

    ///@brief 获得内容窗口，便于后期往内容窗口中添加东西
    QWidget* GetContentWindow()const;

    ///@brief 获得标题处的布局
    QHBoxLayout* GetTitleLayout()const;

private:
    ///@brief 初始化布局
    void InitDefaultLayout();

    /// @brief 初始化样式
    void InitDefaultStyle();
signals:
    void closeWidget();

    void comfirm_signal();

private:


    /// @brief 一个子布局，垂直布局，放在上层的窗口中
    QVBoxLayout* m_mainLayout=nullptr;

    ///@brief 一个水平布局，用于在标题行添加关闭按钮
    QHBoxLayout* m_titleLayout=nullptr;

    ///@brief 两个按钮的水平布局
    QHBoxLayout* m_btnsLayout=nullptr;

    ///@brief 标题
    QLabel * m_titleLabel=nullptr;

    ///@brief 内容窗口
    QWidget* m_contentWidget=nullptr;



    ///@brief 取消按钮
    QPushButton *m_cancleBtn=nullptr;

    ///@brief 确认按钮
    QPushButton *m_comfirmBtn=nullptr;

    ///@brief 显示子窗口应该待的左上角的位置
    QPoint  m_pos;

    ///@brief 子窗口显示的大小
    QSize m_size;



};
}


#endif // BASEDIALOG_H
